Aufgabe eines Berichts (engl. report)
ist die Datenausgabe auf den Bildschirm oder einen Drucker. Ähnlich wie ein
Formular bezieht ein Bericht seine Daten aus einer Basistabelle, einer QBE-
oder SQL-Abfrage- oder einem VBA-Unterprogramm. Die Daten werden in Steuerelementen, vor allem
in Bezeichnungs- und Textfeldern, formatiert. Im Gegensatz zu einem interaktiven
Formular involviert der Bericht aber den Benutzer kaum. Eine anschauliche
Einführung in Aufbau, Funktion und Datenherkunft von Berichten erhalten Sie
im Access-Hilfethema
Berichte.
Daten filtern und sortieren ist in
Berichten und Formularen möglich. Die Gruppierung von
Datensätzen erlaubt hingegen nur ein Bericht. Ein einfache Einführung bietet das Hilfethema
Datensätze
gruppieren.
Wer die Datensätze eines Berichts gruppiert ausgeben möchte, geht wie folgt vor:
Er wählt das Gruppierungsmerkmal, zum Beispiel den Fragenschlüssel.
Er bestimmt die Ausgabereihenfolge des Gruppierungsmerkmals, zum Beispiel eine aufsteigende Reihenfolge.
Er stellt die Gruppierungseigenschaften
ein:
a) Gruppenkopf (engl. header) und/oder Gruppenfuss (engl. footer)
b) Gruppenbruch (Soll der Seitenumbruch die Gruppe auf verschiedene Seiten spalten?)
Bei der Berichtgestaltung spielen Bereiche (engl. sections) eine wichtige Rolle. Im Formular 3. Testantworten eingeben gelangen Sie mit einem Klick auf die Schaltfläche 'Zuordnungsergebnisse' zur Anzeige des Berichts 'Ergebnisse der Zuordnungsaufgaben'. Dieser Bericht enthält die folgenden Bereiche:
Der Berichtskopf enthält den Titel des (vielleicht mehrseitigen) Berichts. Möglich wäre auch ein Berichtsfuss, der den Bericht am Ende abschliesst.
Der Seitenkopf enthält Text, der zu Beginn jeder Seite ausgegeben wird. Der Seitenfuss mit Angabe von Datum und Seitenzahl ist auf der Abbildung nicht sichtbar.
Gruppierungsmerkmal des Beispielberichts ist der Fragenschlüssel. Der Kopfbereich der Gruppe Fragenschlüssel zeigt den Fragenschlüssel fett und die korrekten Zuordnungspaare als Zeichenkette an.
Der Detailbereich gibt je nach Fragenschlüssel unterschiedlich viele Zuordnungspaare aus. Ein Access-Bericht kann bis zu zehn geschachtelte Gruppen ausgeben.

Der obigen Abbildung entspricht die folgende Entwurfssicht:

Der Bericht enthält neben Bezeichnungsfeldern die folgenden Textfelder:
Das Textfeld TxfTitel identifiziert den Bericht, indem es die Testidentifikation des Formulars 3. Testantworten eingeben anzeigt.
Der Seitenkopf enthält mit TxfGeschlechtsname, TxfVorname und TxfMatrikelnummer drei Textfelder, die sich ebenfalls auf das Formular 3. Testantworten eingeben beziehen.
Der Kopfbereich der Gruppe Fragenschlüssel enthält das Textfeld TxfFragenschlüssel, dessen Wert aus der Datenquelle des Berichts stammt. Datenherkunft des Gesamtberichts ist die Abfrage QryZOErgebnisse.
Der Detailbereich zeigt alle Lösungspaare pro Fragenschlüssel an. Die Buchstaben- und Zahlenpräfices stammen ebenfalls aus der Abfrage QryZOErgebnisse. Weil das Textfeld TxfFragenschlüssel im Kopfbereich steht, wird es - im Gegensatz zur Ergebnistabelle von QryZOErgebnisse - statt für jedes Zuordnungspaar nur einmal pro Gruppe angezeigt.
Das Textfeld konkatenierteLösungen stammt mittelbar aus der Datenherkunft QryZOErgebnisse und ursprünglich aus der Tabelle TmpKonkatZOLösungen. Diese temporäre Tabelle wird jedesmal vor dem Öffnen des Berichts erstellt, weil es nicht möglich ist, neben die Spalte Teilnehmerlösung eine Spalte Musterlösung so zu stellen, dass jedem Teilnehmer-Zuordnungspaar ein Muster-Zuordnungspaar entspricht. Die Ereignisprozedur Report_Open konkateniert deshalb alle Musterlösungen eines Fragenschlüssels zu einer Zeichenkette, die im Bericht im Kopfbereich der Gruppe Fragenschlüssel erscheint.
Wenn Sie den Bericht in der Entwurfsansicht öffnen (»Ansicht/Entwurfsansicht) und aus dem Ereignis Öffnen des Eigenschaftenfensters (»Alt/Enter) die Ereignisprozedur Report_Open anzeigen, sehen Sie den umfangreichen Quellcode. Wir fassen deshalb die Logik von Report_Open entwurfssprachlich zusammen:
Ereignisprozedur Report_Open Lösche allfällige Tabelle TmpKonkatZOLösungen des letzten Aufrufs Erstelle Abfrage QryMusterlösungen mit den Spalten ... Fragenschlüssel Buchstabenpräfix Zahlenpräfix Erstelle Tabelle TmpKonkatZOLösungen mit den Spalten ... Fragenschlüssel konkatLösungenLies erste Zeile (Fragenschlüssel,Buchstabenpräfix,Zahlenpräfix) von QryMusterlösungen Bis QryMusterlösungen fertig letzterFragenschlüssel = Fragenschlüssel konkatLösungen = konkatLösungen & Buchstabenpräfix & Zahlenpräfix Lies nächsten Satz von QryMusterlösungen Solange QryMusterlösungen nicht fertig und letzterFragenschlüssel = Fragenschlüssel konkatLösungen = " " & Buchstabenpräfix & Zahlenpräfix Erweitere TmpKonkatZOLösungen um die Zeile (Fragenschlüsse,konkatLösungen)